package componentes;

import java.io.Serializable;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;

/**
 *
 * @author Wagner Tavares
 */
public class Servidor implements Serializable{
    private Configuracao config;
    private String ethOut, llogin, ipHost;
    private String[] ethIn;
    private int portaAutenticaoWeb,portaSquid;
    private boolean proxyTransparente;
    private HashMap<String,Mascaramento> mascaramentos;
    
    public Servidor(){
        ethOut=null;
        llogin=null;
        ipHost=null;
        ethIn=null;
        portaAutenticaoWeb=0;
        portaSquid=0;
        proxyTransparente=false;
        mascaramentos=null;
    }
    
    public Servidor(Configuracao config,String ipHost,String ethOut, String ethIn, boolean proxyTransparente,HashMap<String,Mascaramento> mascaramentos){
        this.config = config;
        this.llogin = config.getLlogin();
        this.ipHost = ipHost;
        this.ethOut = ethOut;
        String linha = ethIn;
        //System.out.println(linha);
        if(!linha.isEmpty()){
            if(linha.contains(";"))
                this.ethIn=linha.split(";");
            else{
                this.ethIn= new String[1];
                this.ethIn[0]=linha;
            }
        }
        this.portaAutenticaoWeb = config.getPortaAuth();
        this.portaSquid = config.getPortaSquid();
        this.proxyTransparente = proxyTransparente;
        this.mascaramentos = mascaramentos;
    }
    
    public String getEthOut(){
        return ethOut;
    }
    public String[] getEthIn(){
        return ethIn;
    }
    public int getPortaSquid(){
        return portaSquid;
    }
    public int getPortaAutenticacaoWeb(){
        return portaAutenticaoWeb;
    }
    public boolean getProxyTransparente(){
        return proxyTransparente;
    }
    public HashMap<String,Mascaramento> getMascaramentos(){
        return mascaramentos;
    }
    public String getLllogin(){
        return llogin;
    }
    public String getIpHost(){
        return ipHost;
    }
    public void setConfig(Configuracao config){
        this.config = config;
    }
    public void setEthOut(String val){
        this.ethOut = val;
    }
    public void setEthIn(String val){
        String linha = val;
        //System.out.println(linha);
        if(!linha.isEmpty()){
            if(linha.contains(";"))
                this.ethIn=linha.split(";");
            else{
                this.ethIn= new String[1];
                this.ethIn[0]=linha;
            }
        }
    }
    public void setPortaSquid(int val){
        this.portaSquid = val;
    }
    public void setPortaAutenticacaoWeb(int val){
        this.portaAutenticaoWeb = val;
    }
    public void setProxyTransparente(boolean val){
        this.proxyTransparente = val;
    }
    public void setMascaramentos(HashMap<String,Mascaramento> val){
        this.mascaramentos = val;
        //this.mascaramentos.clear();
        //this.mascaramentos.putAll(val);
    }
    public void setLllogin(String val){
        this.llogin = val;
    }
    public void setIpHost(String val){
        this.ipHost = val;
    }
    public void exibir(){
        System.out.println("" +
                "interior "+llogin+"\n"+
                "ipHost "+ipHost+"\n"+
                "ethOut "+ethOut+"\n"+
                "portAuth "+portaAutenticaoWeb+"\n"+
                "portSquid "+portaSquid+"\n"+
                "squid "+proxyTransparente+"\n");
        for(String eth : ethIn)
            System.out.println("ethIn "+eth);
        if( mascaramentos == null  || mascaramentos.isEmpty())
            System.out.println("Não há mascaramentos");
        else{
            Collection c = mascaramentos.values();
            for(Iterator it = c.iterator();it.hasNext();){
                Mascaramento temp = (Mascaramento) it.next();
            }
        }       
    }
    private void limpaVariaveis(){
        llogin=null;
        ipHost=null;
        ethOut=null;
        ethIn=null;
        portaAutenticaoWeb=0;
        portaSquid=0;
        proxyTransparente=false;
        mascaramentos=null;
    }
    
}
